// pages/authorize/authorize.js

import TIM from 'tim-wx-sdk';
import TIMUploadPlugin from 'tim-upload-plugin';

let app = getApp();

let options = {
  SDKAppID: app.globalData.SDKAppID // SDKAppID
};

// 创建 SDK 实例，`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例
let tim = TIM.create(options); // SDK 实例通常用 tim 表示

tim.setLogLevel(1);

// 注册腾讯云即时通信 IM 上传插件
tim.registerPlugin({
  'tim-upload-plugin': TIMUploadPlugin
});

Page({

  /**
   * 页面的初始数据
   */
  data: {
    show: false
  },

  login: function () {
    wx.getUserProfile({
      desc: '用于登录系统',
      success: function (res) {
        wx.setStorageSync('userInfo', res.userInfo);
        wx.login({
          success: res => {
            if (res.code) {
              let userInfo = wx.getStorageSync('userInfo');
              wx.request({
                url: app.globalData.prefix + '/account/miniLogin',
                method: "POST",
                data: {
                  code: res.code,
                  nickname: userInfo.nickName,
                  avatarUrl: userInfo.avatarUrl
                },
                success(res) {
                  if (res.data.code === 400) {
                    wx.showToast({
                      title: '帐户已被禁用',
                      icon: 'none',
                      duration: 2000
                    })
                    return;
                  }
                  let userId = res.data.data.id;
                  wx.setStorageSync('userId', userId);
                  //向后端索取userSig并登录tim
                  wx.request({
                    url: app.globalData.prefix+'/account/getUserSig/' + userId,
                    success: (res) => {
                      let userSig = res.data.data.userSig;
                      let promise = tim.login({
                        userID: '' + userId,
                        userSig: userSig
                      });
                      promise.then(function (imResponse) {
                        console.log(imResponse.data); // 登录成功
                        if (imResponse.data.repeatLogin === true) {
                          // 标识帐号已登录，本次登录操作为重复登录
                          console.log(imResponse.data.errorInfo);
                        }
                      }).catch(function (imError) {
                        console.warn('login error:', imError); // 登录失败的相关信息
                      });
                    }
                  })
                  wx.switchTab({
                    url: '../index/index',
                  })

                }
              })
            } else {
              console.log('登录失败！' + res.errMsg)
            }
          }
        })
      }
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //如果本地有缓存就不需要重新登录了
    let userId = wx.getStorageSync('userId');
    let that = this;
    if (userId !== null && userId !== undefined && userId !== '') {
      //但需要判断有没有被禁用
      wx.request({
        url: app.globalData.prefix+'/visitor/getVisitorById/' + userId,
        success: (res) => {
          if (res.data.data.visitorInfo.isBanned === '1') {
            wx.showToast({
              title: '帐户已被禁用',
              icon: 'none',
              duration: 2000
            })
            that.setData({
              show: true
            })
            wx.removeStorageSync('userId');
            return;
          } else {
            //向后端索取userSig并登录tim
            wx.request({
              url: app.globalData.prefix+'/account/getUserSig/' + userId,
              success: (res) => {
                let userSig = res.data.data.userSig;
                let promise = tim.login({
                  userID: '' + userId,
                  userSig: userSig
                });
                promise.then(function (imResponse) {
                  console.log(imResponse.data); // 登录成功
                  if (imResponse.data.repeatLogin === true) {
                    console.log(imResponse.data.errorInfo);
                  }
                }).catch(function (imError) {
                  console.warn('login error:', imError); // 登录失败的相关信息
                });
              }
            })
            wx.switchTab({
              url: '../index/index',
            })
          }
        }
      })
    } else {
      this.setData({
        show: true
      })
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})